package com.itheima.test;

public class Demo {
    public static void main(String[] args) {
        Outer.Inner a = new Outer().new Inner();
        a.show();
        System.out.println(a.i);
        Outer outer = new Outer();
        int oi = outer.o;
        System.out.println(oi);
        //外部类名 对象名 = new 外部类名（）；
        Outer outer1 = new Outer();
        //调用外部类创建的方法实现访问私有内部类的目的
        outer1.method();
        //外部类名.内部类名 对象名 = new 外部类名.内部类名();
        Outer.Inner2 ot = new Outer.Inner2();
        ot.show2();
        Outer.Inner2.fun();//类名一路点"."
    }
}

class Outer{
    int o = 10;
    class Inner{
         int i = 20;
        public void show(){
            System.out.println("Inner...show");
        }
    };
    //私有内部类
     private class Inner1{
        public void show1(){
            System.out.println("show1");
        }
    }
    //同一个外部类中创建方法访问私有内部类
    public void method(){
         Inner1 inner1 = new Inner1();
         inner1.show1();
    }
    //静态内部类
    static class Inner2{
         public void show2(){
             System.out.println("show2");
         }
        //静态内部类下的静态方法
         public static void fun(){
             System.out.println("fun");
         }
    }
}